<html>
    <head>
		<meta name="layout" content="public" />
    </head>
    <body>
	        <h1>Tecnologias utilizadas</h1>
	        <p>


    Falaremos a seguir sobre as tecnologias utilizadas na construção do Via Exposi-
tus. Uma breve apresentação das linguagens de modelagem e programação, do
framework para desenvolvimento web e do sistema gerenciador de banco de dados
utilizado.
</p><p>
      O paradigma para a construção do Via Expositus escolhido para a análise, pro-
jeto e desenvolvimento do sistema foi o orientado a objetos. A orientação a objetos
baseia-se na comunicação entre componentes do sistema denominados objetos. Es-
colhemos a orientação a objetos pela facilidade de representar o mundo real em
software ao utilizá-la. Basicamente um objeto é uma instância de uma classe. Obje-
tos possuem comportamentos conhecidos como métodos e estados conhecidos
como atributos, os quais são definidos em uma classe.
</p><p>
      Para modelagem do sistema utilizamos o linguagem UML, Unified Modeling Lan-
guage. A UML foi desenvolvida para modelar visualmente um sistema, ela não espe-
cifica uma metodologia de desenvolvimento, apenas auxilia a visualizar o modelo de
comunicação entre os objetos, os objetos em si, seus ciclos de vida, atividade, entre
outros aspectos espalhados pelos seus diagramas. Isso significa basicamente que a
UML ajuda os desenvolvedores a visualizarem como o seu sistema funcionará.
Como artefatos da modelagem utilizando a UML geramos os diagramas de classe,
de caso de uso e de componente.
</p><p>
      Para codificação do sistema utilizamos as linguagens Java e Groovy, utilizando
o framework web Grails. Java é uma linguagem de programação orientada a obje-
tos, fortemente tipada, que possui como caraterística principal, a possibilidade de
ser executada em diferentes plataformas utilizando o mesmo código. Para que isto
funcione, o código Java é compilado em uma linguagem intermediária, o byte-code,
e este é executado em uma máquina virtual de processamento denominada JVM,
Java Virtual Machine, sendo cada máquina virtual, específica para cada plataforma.
O Groovy é uma linguagem de script para desenvolvimento ágil com tipagem dinâ-
mica para a plataforma Java. Caracterizada por código mais compacto e enxuto,
sem burocracia de tipos. Por rodar sobre a plataforma Java, isto é, sobre a JVM,
possui toda a portabilidade do Java, além de sua fácil integração com o Java, e a
capacidade de importar qualquer biblioteca desenvolvida em Java.
       </p><p>
     O Grails é um framework de desenvolvimento ágil para web, utilizando basica-
mente a linguagem Groovy para o desenvolvimento, sendo também possível desen-
volver em Java. Baseia-se nos padrões COC(Convention Over Configuration) e
DRY(Don't Repeat Yourself), convenção ao invés de configuração e DRY(Don't Re-
peat Yourself) não repita você mesmo. Ele agrupa grandes frameworks para resolver
a aplicação, como o Hibernate para a persistência de dados, o Spring para injeção
automática, o SiteMesh para resolver problemas de layout, entre outros frameworks.
</p><p>
     Para solução de autenticação como parte da segurança da informação utilizada
no sistema utilizamos o projeto Acegi Security, conhecido atualmente como Spring
Security, para gerenciamento e controle do acesso aos recursos do sistema. O pro-
jeto é de alta aceitação no mercado e de fácil integração com a plataforma de de-
senvolvimento do Grails, sendo distribuído como um plugin no repositório oficial do
Grails.
</p><p>
     Para a persistência dos dados da aplicação utilizamos a tecnologia GORM
(Grails Object Relational Mapping), que faz parte do framework Grails, e que traba-
lha integrada ao framework Hibernate. O Hibernate é o provedor de solução de ma-
peamento objeto relacional mais conhecido dentro da plataforma Java, ele é um fra-
mework open source e realiza o trabalho de abstração da lógica relacional dentro da
aplicação orientada a objetos, fazendo assim com que o desenvolvimento siga uma
linha mais elegante. Uma outra grande vantagem do uso de um sistema de ORM no
projeto é a fácil portabilidade de SGBDs adquirida, já que o hibernate se encarrega
de gerar SQL nativo adequado a cada sintaxe do banco de dados configurado pela
aplicação.
</p><p>
     Para armazenamento dos dados utilizamos o banco de dados MySQL. O
MySQL é um sistema de gerenciamento de bancos de dados (SGBD) relacional mui-
to popular e de código aberto. O MYSQL, como os outros SGBDs da atualidade, uti -
liza a SQL(Structured Query Language), uma linguagem para consulta de dados, ele
armazena coleções de dados estruturados que podem possuir relações umas com
as outras(MYSQL, 2010) de uma maneira eficiente. Utilizar um SGBD para armaze-
nar os dados é atualmente a forma mais segura e rápida de se manter dados.
       </p><p>
    Como solução para o versionamento do código e histórico de revisões utilizamos
o serviço de armazenamento de projetos do Google, o Google Code, que fornece
gerenciamento de projetos open-source e conta com diferentes tecnologias de versi-
onamento do mercado, como SVN e Mercurial. Optamos utilizar o SVN por experiên-
cia pessoal e pela sua alta disseminação.


            </p>
    </body>
</html>